package com.micro.balance;

import java.util.ArrayList;
import java.util.Map;
import java.util.Random;
import java.util.Set;

import org.springframework.stereotype.Component;

/**
 * 随机算法
 */
@Component("random")
public class RandomLoadBalance extends AbstractLoadBalance{

	/**
	 * 执行随机选择服务器的逻辑
	 *
	 * @param map 一个映射，键是服务器的标识，值是服务器的权重
	 * @return 返回随机选择的服务器标识
	 */
	@Override
	protected String doSelect(Map<String,Integer> map){
		// 创建一个ArrayList来存储服务器标识
		ArrayList<String> lists = new ArrayList<String>();
		// 获取服务器标识的集合
		Set<String> sets=map.keySet();
	    // 将服务器标识添加到ArrayList中
	    lists.addAll(sets);

		// 获取服务器的数量
		int len = lists.size();
        // 创建一个Random对象用于生成随机数
        Random random = new Random();
        // 生成一个随机索引
        int index = random.nextInt(len);

        // 返回随机选择的服务器标识
        return lists.get(index);
	}

}

